package com.xyd.mapper;

import com.xyd.entity.Order;
import com.xyd.entity.User;
import java.util.List;
import org.apache.ibatis.annotations.Param;

/**
 * 类描述：
 *
 * @author 张吉哲
 * @date 2021/1/11 16:26
 */
public interface OrderMapper {

  /**
   * 根据用户id查询订单信息
   *
   * @param euUserId 用户id
   * @return 订单信息
   */
  Order getOrderByUserId(String euUserId);

  /**
   * 查看该用户是否有订单
   *
   * @param euUserId 用户id
   * @return 如果有订单返回订单id，没有返回null
   */
  Long isHasOrderByUserId(String euUserId);

  /**
   * 添加新的订单
   *
   * @param user 用户信息
   * @return 是否成功
   */
  Boolean addOrderByUser(User user);

  /**
   * 添加商品后修改总价
   *
   * @param eoId 订单id
   * @param sum  总价
   * @return 是否成功
   */
  Boolean changeEoCostByEoId(@Param("eoId") Long eoId, @Param("sum") int sum);

  /**
   * 获取当前页面的信息
   *
   * @param start    起始订单
   * @param pageSize 一个页面的的大小
   * @return 信息
   */
  List<Order> getAllOrderByPage(@Param("start") Integer start, @Param("pageSize") Integer pageSize);

  /**
   * 获取一共的订单数量
   *
   * @return
   */
  int getCountOrder();

  /**
   * 根据id和名字获取订单信息
   *
   * @return
   */
  List<Order> getOrderByIdName(Order order);

  /**
   * 根据主键id获取对应的信息
   *
   * @param id 主键id
   * @return 相关信息
   */
  Order getOrderByEoId(@Param("id") long id);


  /**
   * 根据主键id修改列表
   *
   * @param order order对象
   * @return 是否成功
   */
  int changeOrderByEoId(Order order);

  /**
   * 根据主键id删除订单
   *
   * @param id 主键id
   * @return 是否成功
   */
  int deleteOrderByEoId(@Param("id") long id);

  /**
   * 添加订单
   *
   * @param euUserId   用户id
   * @param euUsername 用户名
   * @param euAddress  家庭住址
   * @param eoCost     订单金额
   * @return 订单主键作为订单id
   */
  Long addOrder(@Param("euUserId") String euUserId, @Param("euUsername") String euUsername,
      @Param("euAddress") String euAddress, @Param("eoCost") double eoCost);
}
